package com.gin.no_gay_alliance.database.entity;

import androidx.annotation.NonNull;
import androidx.room.ColumnInfo;
import androidx.room.Entity;
import androidx.room.PrimaryKey;
import androidx.work.WorkRequest;

import java.util.UUID;

/**
 * 回复历史扫描任务
 *
 * @author : ginstone
 * @version : v1.0.0
 * @since : 2023/9/20 14:52
 **/
@Entity
public class ScanTask {
    @PrimaryKey(autoGenerate = true)
    public int id;
    /**
     * 标题
     */
    public String title;
    /**
     * 主题id
     */
    public long topicId;
    /**
     * 下一次执行时的页数
     */
    public int pageStart;
    /**
     * 结束页数, 如果不填则以最大页数为准
     */
    public Integer pageEnd;
    /**
     * 最大页数
     */
    public int totalPage;
    /**
     * 任务状态
     */
    @NonNull
    public Status status;
    /**
     * 状态描述
     */
    public String description;
    /**
     * {@link WorkRequest}的UUID，提交任务后写入
     */
    public UUID uuid;
    /**
     * 是否监控
     */
    @ColumnInfo(defaultValue = "0")
    public boolean watching;
    /**
     * 监控任务下次扫描的最大页
     */
    @ColumnInfo(defaultValue = "0")
    public int pageWatched;
    /**
     * 上次扫描的时间戳
     */
    @ColumnInfo(defaultValue = "0")
    public long timestampWatching;

    /**
     * 任务状态
     */
    public enum Status {
        /**
         * 进行中
         */
        IN_PROGRESS("进行中"),
        /**
         * 等待中
         */
        WAITING("等待中"),
        /**
         * 由用户操作暂停
         */
        PAUSED("已暂停"),
        /**
         * 完成，执行到结束页数或最大页数而停止
         */
        COMPLETED("已完成"),
        /**
         * 发生错误而停止
         */
        ERROR("错误"),
        ;
        public final String name;

        Status(String name) {
            this.name = name;
        }
    }
}
